//****************************************************************************//
//* CI7 Libreria grafica                                                     *//
//*																			 *//
//*	main.cpp        														 *//
//*	Fichero principal de la aplicacion.										 *//
//*																			 *//
//* ci7.hddisseny.es                                                         *//
//* hddisseny@ci7.hddisseny.es                                               *//
//****************************************************************************//

// Incluye todas las librerias de CI7.
#include "ci7lib/ci7.hpp"

// Creamos los objetos necesarios para la ejecucion.
CI7             ci7R01Test;
CI7_Emotion     ci7R01Emotion;

CI7_Color       BLACK = {0,0,0};
CI7_Color       WHITE = {255,255,255};

// Los prototipos de las funciones basicas del juego.
void testInit ( void );
void testMain ( void );
void testCalc ( void );
void testDraw ( void );

// Nucleo principal de la aplicacion.
int main( int argc, char *argv[] ) {
    testInit();
    testMain();
    return 0;
}

// Inicia la libreria y carga los recursos necesarios y configuraciones.
void testInit ( void ) {
    ci7R01Test.SurfaceInitView ( 1024 ,768 ,32 ,CI7_MODE_WIN ,"ci7R01Test - Presiona [ ESC ] para salir" ,"" );
}

// Bucle principal de la aplicacion o juego
void testMain ( void ) {
    while ( ci7R01Emotion.EmotionEngine() != -1 ) {
        testCalc();
        testDraw();
    }
    ci7R01Test.SurfaceExitView( 0 );
}

// Aqui se calculan todas las variables que se usan en la aplicacion o juego.
void testCalc ( void ) {
    switch ( ci7R01Emotion.EmotionEngine() ) {
    case CI7_KEY_ESCAPE:
        ci7R01Test.SurfaceExitView ( 0 );
        break;
        break;
    }
}

// Se Dibuja en pantalla y se refresca la superficie.
void testDraw ( void ) {
    ci7R01Test.SurfaceFillView ( BLACK );
    ci7R01Test.SurfaceFlipView ( 1 );
}
